import $http from "../http/http";
const OK = 200;

export default {
  //发送请求 修改仓库中的list
  async updateList(store){
    //发送请求获取list
    const {code,data} = await $http.get("/contactList");
    if(code === OK){
      //提交一个mutation
      store.commit("updateList",data)
    }
  },
  //只是为新增做一些ui上的准备
  add(store){
    store.commit("add")
  },
  //只是为编辑做一些ui上的准备
  edit(store,item){
    store.commit("edit",item)
  },
  //发送请求 新增数据
  async saveForAdd(store,info){
    const {code,data} = await $http.post("/contact/new/json",info);
    if(code === OK){
      //在新增完之后 要更新list
      //如果源action返回的是一个promise 那么对当前这个action进行dispatch返回也是那个promise
      await store.dispatch("updateList")
      store.commit("updateChosenContactId",data.id)
    }
  },
  //发送请求 修改数据
  async saveForEdit(store,info){
    const {code,data} = await $http.put("/contact/edit",info);
    if(code === OK){
      await store.dispatch("updateList")
    }
    //将编辑的那个联系人 作为 选中的那一个
    store.commit("updateChosenContactId",data.id)
  },
  //发送请求 删除数据
  async delete(store,info){
    const {code} = await $http.delete("/contact",{
      params:{
        id:info.id
      }
    })
    if(code===OK){
      //加了await 先更新list 再更新chosenContactId
      //如果完全不出现报错  必须先更新chosenContactId 再更新list
      //修改chosenContactId  如果你要删除的那一条正好是当前选中的那一条 将chosenContactId置为null
      if (store.state.chosenContactId === info.id) {
        store.commit("updateChosenContactId",null)
      }

      await store.dispatch("updateList")
    }
  }
}
